#include <unistd.h>
#include <stdio.h>
#include <errno.h>
#include <stdlib.h>
#include <string.h>
#include <iostream>

int main()
{
    // char buffer[200];
    // int count = read(0, buffer, sizeof(buffer) - 1);
    // if (count < 0)
    // {
    //     perror("读取错误！\n");
    //     exit(1);
    // }
    // buffer[count] = 0;
    // // count = write(1, buffer, strlen(buffer));
    // char* ptr = buffer;
    // while (1)
    // {
    //     count = write(1, ptr, 1); // 尝试写入1个字节
    //     if (count < 0)
    //     {
    //         perror("输出错误！");
    //         exit(1);
    //     }
    //     else if (count == 0)
    //     {
    //         break; // 如果写入0个字节，退出循环
    //     }
    //     ptr++;
    //     // 如果需要，可以在这里移动buffer指针或修改buffer内容
    // }

    int pipefds[2];
    int flag = pipe(pipefds);
    if(flag == -1)
    {
        perror("创建管道失败\n");
        exit(EXIT_FAILURE);
    }
    pid_t fd = fork();
    if(fd > 0)
    {
        close(pipefds[0]);
        char buffer[100];
        while(1)
        {
            std::cout << "请输入一个字符串！\n"  << std::endl;
            std::cin >> buffer;
            int ret = write(pipefds[1], buffer, strlen(buffer));
            if(ret < 0)
            {
                perror("写入错误！\n");
                exit(EXIT_FAILURE);
            }
        }
    }
    else
    {
        close(pipefds[1]);
        char buffer[100];
        while(1)
        {
            int ret = read(pipefds[0], buffer, sizeof(buffer) - 1);
            if(ret < 0)
            {
                perror("读取错误！\n");
                exit(EXIT_FAILURE);
            }
            if(ret <= sizeof(buffer) - 1)
            {
                std::cout << "读取成功！内容为: " << buffer << std::endl;
            }
        }
        exit(0);
    }
    return 0;
}